home *** CD-ROM | disk | FTP | other *** search
- Thu Mar 1 19:32:03 1990 Michael Tiemann (tiemann at teacake)
-
- * version.c: version 1.37.1 released.
-
- * integrate.c (expand_inline_function): Round up size of parm_map.
-
- * g++.texinfo: Updated to version 1.37.1, including the addition
- of a new chapter on exception handling.
-
- * ld.c: Fixed #ifdef problems introduced by Mark Ullman.
-
- * cplus-parse.y (print_parse_statistics): Modified to work in case
- YYDEBUG is not defined.
-
- Wed Feb 28 09:45:09 1990 Michael Tiemann (tiemann at teacake)
-
- * version.c: version 1.37.0 released.
-
- * HINTS: Hacked to look like an RMAIL file.
-
- * cplus-typeck.c (build_modify_expr_1): Copy virtual baseclasses
- of members.
-
- Mon Feb 26 06:36:50 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-class.c (finish_base_struct): When building B->VFIELDS,
- use precisely the right baseclass in the TREE_PURPOSE slot.
- * cplus-class.c (modify_vtable_entries): Add additional test of
- normalcy, which is that TREE_PURPOSE (VSLOTS) agree with the
- basetype that TREE_VALUE (VSLOTS) is.
-
- * cplus-decl.c (finish_decl): If ASMSPEC_TREE is non-zero, then
- zero out DECL_RTL (DECL). Otherwise, it won't take.
-
- Sun Feb 25 03:50:08 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-typeck.c (build_modify_expr): Fix off-by-one bug in array
- assignment case.
-
- * cplus-init.c (cplus_expand_expr_stmt): Move function from here...
- * cplus-decl.c (cplus_expand_expr_stmt): ...to here. Now we can
- handle binding-level semantics at `exprstmt' boundaries.
-
- * cplus-decl.c (lang_decode_option): Moved function from here...
- * cplus-decl2.c (lang_decode_option): ...to here. Also moved
- flags around, as neccessary.
-
- * cplus-method.c (various places): Call `dump_readonly_or_volatile'
- in many more places (saving 624 bytes object code).
-
- * tree.h (struct tree_common): Add `raises_attr' and define
- TREE_RAISES.
- * tree.c (build{,1}): Set TREE_RAISES bit.
- * cplus-class.c (build_method_call): Set TREE_RAISES bit.
- * cplus-cvt.c (convert_to_aggr): Ditto.
- * cplus-typeck.c (build_function_call,actualparameterlist): Ditto.
- * cplus-init.c (expand_aggr_init_1): Don't know what to do about
- TREE_RAISES, so #if 0'd out code to set it.
-
- * cplus-decl.c (struct binding_level): Add new fields
- `more_exceptions_ok' and `have_exceptions'.
-
- Sat Feb 24 14:05:01 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-decl.c (finish_function): Move code up that handles named
- return values that got kicked out of registers (hard or pseudo).
-
- * stmt.c (expand_function_start): Failed to set TREE_REGDECL in
- the case that PARMS_HAVE_CLEANUPS was nonzero.
-
- * stmt.c (expand_goto_internal,fixup_cleanups): After running
- cleanups, fixup the stack.
-
- Fri Feb 23 07:40:17 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-cvt.c (build_type_conversion): There is only one void
- type, so don't try looking "default" void to see if different.
-
- * cplus-except.c (expand_cplus_end_catch): Call `expand_end_catch'
- instead of `expand_escape_except'.
-
- * cplus-except.c (expand_cplus_{end_except,reraise}): In case of
- unhandled exceptions, have the program call
- `__unhandled_exception' instead of `abort'.
-
- * cplus-class.c (ideal_candidate): If the best candidate requires
- a strict subset of the user-defined type conversions of all the
- other candidates, pick it as the best.
-
- * cplus-type2.c (build_functional_cast): If both attempts to cast
- the argument failed, see why with LOOKUP_NORMAL, not
- LOOKUP_COMPLAIN.
-
- Thu Feb 22 03:52:00 1990 Michael Tiemann (tiemann at arkesden)
-
- * clpus-decl.c ({push,pop}_decl_level): Now #includes "stack.h"
- and uses `{push,pop}_stack_level'.
-
- * cplus-decl.c (hack_incomplete_structures): Now also completes
- arrays of incomplete structs.
-
- * cplus-lex.c (build_operator_fnname): Don't get faked out by
- ERROR_MARK as the TREE_CODE.
-
- * stor-layout.c (layout_{record,union}): For loops over fields,
- skip if TREE_CODE (field) != FIELD_DECL, instead of testing if ==
- CONST_DECL or VAR_DECL or TYPE_DECL etc.
-
- * cplus-decl.c (pushtag): Do gratuitous C++ typedefing even when
- in C language scope. Sigh.
-
- * cplus-decl.c (xref_tag): Don't assume CODE == TREE_CODE (REF).
- It's not when the user redeclares REF as the wrong kind of tag.
-
- * cplus-search.c (dfs_init_vbase_pointers): Use TREE_PURPOSE of
- VBASE_INIT_RESULT to hold the type of the virtual baseclass that
- was initialized.
- * cplus-init.c (expand_aggr_vbase_init): Walk through RESULT and
- INIT_LIST in the order of CLASSTYPE_VBASECLASSES.
- * cplus-init.c (expand_aggr_vbase_init_1): New function.
-
- * cplus-decl.c (finish_function): Test CLASSTYPE_VSIZE before
- calling `build_virtual_init'.
-
- to do: fix protected squeaking through with -fsave-memoized
- to do: unify code in expand_vec_init, expand_vec_delete
- to do: for-local objects with destructors do not land in the right
- cleanup contour.
- to do: fix complicated multiple inheritance bugs that strike when
- baseclasses are not virtual, and appear at multiple sites within
- the lattice.
- to do: integrate.c vs GCC.
- to do: virtual functions for Convex and Choices
- to do: real pointers to members
-
- Mon Feb 19 13:48:30 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-decl.c (grokdeclarator): Fix up ENUMERAL_TYPEs which are
- ANON_AGGR_NAME_P.
-
- * cplus-cvt.c (convert): If we know a type conversion applies,
- don't try for fancy constructors.
-
- * cplus-decl.c (build_enumerator): TREE_TYPE (VALUE) must always
- be INTEGER_TYPE_NODE before calling `build_binary_op_nodefault'.
-
- * cplus-decl.c (complete_array_type): Merged GCC 1.37 code.
- * integrate.c (copy_for_inline): Ditto.
- * cplus-decl.c (grokdeclarator): Ditto.
- * stor-layout.c (layout_type): Ditto.
-
- Sat Feb 17 08:49:21 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-typeck.c (require_instantiated_type): Make non-static.
- * cplus-typeck.c (type_unknown_p): New function, returns
- truthvalue of whether the TREE_TYPE of its argument is known.
- * cplus-class.c (various places): Changed to call these functions.
-
- Fri Feb 16 15:17:54 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-class.c (finish_struct): Cons up default destructors when
- T uses virtual baseclasses or multiple inheritance, in addition to
- the usual cases.
-
- * integrate.c (copy_rtx_and_substitute): If we were needing an
- inline target (for example, a USE of the function return result),
- and we don't have one, just cons one up.
-
- * cplus-init.c (expand_vec_init): Comparison of HOST_I against
- zero should have been >=, not >.
-
- * cplus-dem.c: Fix #defines to use bcopy, bcmp instead of the str
- functions.
-
- * cplus-cvt.c (convert): If converting to void type, check for
- possible operator void.
-
- * stmt.c (fixup_cleanups): If cleanups expand to nothing, don't
- call `reorder_insns'.
-
- * cplus-search.c ({push,pop}_stack_level): New functions.
- Abstracts functionality of pushing/popping objects to/from
- obstacks.
- * cplus-search.c ({push,pop}_search_level): Use new *_stack_level
- functions.
- * cplus-search.c ({push,pop}_type_level): Ditto.
-
- Tue Feb 13 11:32:12 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-init.c (build_delete): This function can get visibilities
- wrong if default destructors are not built (currently the case).
- As a temporary fix, pass FLAGS with LOOKUP_PROTECTED_OK for base
- destructor calls, and test LOOKUP_PROTECTED_OK when thinking about
- complaining.
-
- Sun Feb 11 11:47:37 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-decl.c (finish_function): Don't call `build_virtual_init'
- for types which don't have virtual functions. Similarly, don't
- call `build_delete' if it doesn't need a destructor.
-
- * cplus-init.c (finish_base_init,build_delete): When building up
- and tearing down objects' bases, build pointers to base objects
- directly rather than by calling through `convert_pointer_to',
- since ambiguity in the lattice causes it trouble.
-
- * cplus-typeck.c (build_modify_expr): Removed unneeded casts when
- building sum of base address + offset.
- * cplus-class.c (build_vbase_path): Ditto.
- * cplus-class.c (build_vfn_ref): Ditto.
- * cplus-init.c (resolve_offset_ref): Ditto.
- * cplus-init.c (build_delete): Ditto.
-
- * cplus-typeck.c (build_modify_expr): Fix parenthesis error for
- deciding whether to recurse through aggregates or not
- (TYPE_USES_VIRTUAL_BASECLASSES is not enough).
-
- * cplus-parse.y (try): Change type from TTYPE to ITYPE.
- * cplus-parse.y (stmt): Call `cplus_expand_end_try' with result of
- `try' stmt. Now, if we wanted to, we could pass additional
- information about whether this try block is followed by an except
- stmt or a reraise clause.
- * cplus-parse.y (stmt): When processing a reraise clause, use
- ERROR_MARK_NODE as the default handler, to indicate that we
- actually have one, rather than NULL_TREE, which claims that we
- don't.
- * cplus-except.c (cplus_expand_end_except): Always try next
- handler before ending the block.
-
- Sat Feb 10 13:57:28 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-init.c (build_delete): Use `convert_pointer_to' when ADDR
- is TREE_LITERAL.
-
- * cplus-class.c (build_vfn_ref): Save intermediate result in
- SAVE_EXPR so we don't have to compute each component of virtual
- function pointer twice. But only do this when BUILDING_CLEANUP
- is zero.
- * cplus-decl.c (maybe_build_cleanup): New global variable
- BUILD_CLEANUP is controlled by this function.
-
- * cplus-expr.c (cplus_expand_expr): Use separate CALL_TARGET and
- RETURN_TARGET, in case call to `expand_expr' returns something
- different than CALL_TARGET in NEW_EXPR case.
-
- Fri Feb 9 04:00:42 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-lex.c (getch): New function. Encapsulates call to `getc'
- macro within function to save space.
- * cplus-lex.c (check_newline): Call `getch' instead of `getc' to
- get pragma text.
-
- Mon Feb 5 13:55:33 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-decl.c (grokdeclarator): Don't gripe if static member has
- incomplete type.
-
- Sun Feb 4 19:51:52 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-class.c (modify_vtable_entries): Fix failure to use
- proper initial value for OFFSET.
-
- * cplus-tree.c (layout_vbasetypes): Gross error was accidently
- causing storage to be exponentially counted! Fixed...
-
- * cplus-decl.c (duplicate_decls): Catch case where OLDDECLS are
- some overloaded functions and NEWDECL is not a FUNCTION_DECL.
-
- * cplus-init.c (finish_base_init): If there are several members
- with the same name (from different baseclasses), get the topmost
- one.
-
- * cplus-tree.c (lang_simple_cst_equal): New function. Callback
- for `simple_cst_equal'.
- * tree.c (simple_cst_equal): Needs new treatment for handling
- NEW_EXPR and CPLUS_NEW_EXPR. Use call-back for latter.
- * tree.c (simple_cst_list_equal): Now non-static.
-
- * integrate.c (expand_inline_function): Use `convert_move' instead
- of `emit_move_insn' when we need to copy INLINE_TARGET back to
- TARGET.
-
- Sat Feb 3 09:45:47 1990 Michael Tiemann (tiemann at teacake)
-
- * ld.c: integrate changes from Mark Ullman which make linker
- suitable for cross linking.
-
- Thu Feb 1 16:27:03 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-expr.c (cplus_expand_expr): If TARGET is 0, generate a new
- temporary, unless MODE is BLKmode, in which case we abort.
-
- Tue Jan 30 02:55:20 1990 Michael Tiemann (tiemann at arkesden)
-
- * version.c: version 1.36.4 released.
-
- * cplus-decl.c (build_enumerator): Make it impossible to lose if
- ENUM_NEXT_VALUE is something like INTEGER_ONE_NODE.
-
- * tree.c (build_int_2): Don't need to set TREE_LITERAL here, it is
- set in `make_node'.
- * tree.c (make_node): Increment `TREE_NODE_KINDS[C_KIND]' for
- INTEGER_CST nodes.
-
- * cplus-init.c (expand_aggr_init_1): NEW_EXPR now encapsulates new
- information (due to compiler merging); lossage fixed.
-
- * case.c (various places): Replace calls to `build_int_2 (x, 0)'
- (where x == 0 or x == 1) with INTEGER_{ZERO,ONE}_NODE as
- appropriate.
-
- * cplus-typeck.c (build_component_addr): Break out code to build
- the ADDR_EXPR of a COMPONENT_REF from `build_unary_op'.
- * cplus-cvt.c (build_up_reference): Call `build_component_addr' in
- case of COMPONENT_REF.
-
- Sun Jan 28 04:39:54 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-init.c (build_vec_delete): Set TREE_VOLATILE on BLOCK,
- LOOP, and IF_STMT, to avoid spurious warning messages about
- statements not being useful.
- * stmt.c (warn_if_unused_value): Don's warn for LOOP_STMT,
- IF_STMT, or LET_STMT.
-
- * cplus-decl.c (build_enumerator): Prepare for fact that `fold'
- might put NOP_EXPRs around everything that is not an lvalue.
-
- * cplus-method.c (build_opfncall): New parameter FLAGS.
- Don't lose unless FLAGS include LOOKUP_COMPLAIN; there's always a
- chance that a type conversion will work, after all.
- * All callers changed.
-
- * cplus-cvt.c (build_type_conversion): Permit `operator int' to
- convert when `unsigned' is wanted (provided no `operator unsigned'
- exists). Same for `long' and `unsigned long'.
-
- * cplus-expr.c: New file. Contains definition of new function
- `cplus_expand_expr'.
-
- * cplus-lex.c (init_lex): Initialize LANG_EXPAND_EXPR.
-
- * toplev.c (LANG_EXPAND_EXPR): New variable is pointer-to-function
- which expands language-specific tree codes. Its default is
- `fancy_abort'.
- * cplus-tree.def (CPLUS_NEW_EXPR): New tree code.
-
- Sat Jan 27 09:30:13 1990 Michael Tiemann (tiemann at arkesden)
-
- * tree.c (decl_type_context): Handle LET_STMT.
-
- * stmt.c (expand_catch): Renaming of function
- `expand_start_catch'. This function no longer takes EXITFLAG or
- ESCAPEFLAG as parameters (which is just as well, since it never
- used them anyway).
- * cplus-except.c (expand_cplus_start_catch): Caller changed.
- * cplus-parse.y: Removed vestigial call to `expand_end_catch'.
-
- * cplus-decl.c (duplicate_decls): Use FUNCTION_SIZE as measure of
- size of FUNCTION_DECL.
-
- * cplus-class.c (finish_base_struct): Get a fresh assoc list for
- BASETYPE before calling `propagate_basetype_offsets'. Also, copy
- the language-specific parts of BASETYPE.
- * cplus-class.c (propagate_basetype_offsets): FOR_TYPE now owns
- its assoc list for sure.
-
- * cplus-class.c (build_vbase_path): Convert EXPR at each stage of
- the lowering so that we don't get multiple calls to
- `build_vbase_path' when we try to build the vbase pointer.
- @@ This could probably be solved more cleanly.
-
- @@ Note that COMPONENT_REFs used as instance variables in method
- calls lose the fact that they were of fixed type.
-
- * cplus-decl.c (LANG_F_OPTIONS): Add FLAG_NO_INLINE for
- -fno-inline.
- * cplus-decl.c (grokdeclarator): Implement FLAG_NO_INLINE.
-
- * cplus-decl.c (pushdecl): Only record an incomplete variable if
- it is RECORD_TYPE or UNION_TYPE. ARRAY_TYPE does not count.
-
- * cplus-init.c ({value,purpose}_member): Moved to tree.c.
- * cplus-decl2.c (FIRST_GLOBAL_OBJECT_NAME): Moved to varasm.c.
-
- * cplus-init.c (build_delete): Fixed code to avoid going through
- virtual function tables when some baseclasses are virtual.
- Accomplished by changing parameter PROTECT to FLAGS.
- * All callers changed.
-
- Fri Jan 26 03:44:15 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-decl.c (xref_tag): For jjg: make typedefs and struct defs
- more equivalent.
-
- * cplus-decl.c (xref_tag): Derived unions are invalid.
-
- * cplus-decl.c (finish_function): For destructors, remember to run
- base destructors for virtual baseclasses.
-
- * cplus-search.c (get_base_distance): Track leftmost path in chain
- whether or not PATH_PTR is non-NULL.
-
- * cplus-init.c (expand_vec_delete): Deleted. Callers now expand
- result from `build_vec_delete'.
- * Reinstall Jan 23 changes marked `@'.
-
- Thu Jan 25 21:35:27 1990 Michael Tiemann (tiemann at teacake)
-
- * expr.c (expand_expr): Handle expansion of LOOP_STMT and IF_STMT.
-
- * tree.c (build_loop): Bring this function out of its #ifdef.
-
- * stmt.c (expand_decl): Remove CLEANUP argument.
- * stmt.c (expand_decl_cleanup): New function, called when cleanup
- is needed.
- * cplus-decl.c (finish_decl): Use `expand_decl_cleanup'.
-
- Wed Jan 24 07:34:40 1990 Michael Tiemann (tiemann at arkesden)
-
- * cplus-decl.c (maybe_build_cleanup): Never build cleanups on the
- MOMENTARY_OBSTACK.
-
- * stmt.c: Merged to 1.36.93.
- * expr.c: Merged to 1.36.93.
-
- Tue Jan 23 02:40:42 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-typeck.c (build_binary_op_nodefault): Use
- `conver_pointer_to' to convert arguments before comparing
- aggregate pointers.
-
- * cplus-class.c (build_vbase_path): Optimize path to virtual bases
- through objects with fixed type.
-
- * cplus-typeck.c (build_component_ref_2): Deleted.
- * cplus-typeck.c (build_component_ref): When FIELD comes from a
- non-"normal" baseclass, go through `convert_to_pointer' to convert
- DATUM to the right address.
-
- * cplus-typeck.c (build_unary_op): Handle case where FIELD is
- really a TYPE_DECL (which is used just for its DECL_OFFSET).
-
- The following changes are for merged GCC/G++. Changes marked
- with `@' had to be backed out.
- @ cplus-init.c (expand_delete): Deleted.
- @ cplus-decl.c (maybe_build_cleanup): Return tree nodes built by
- `build_delete' rather than building up structure with DELETE_EXPR.
- * cplus-decl2.c (finish_function): Expand expression returned from
- `build_delete' rather than calling `expand_delete'.
- * cplus-init.c (expand_vec_delete): Ditto.
- @ expr.c (expand_expr): No longer any need to handle
- `DELETE_EXPR'.
- @ tree.def (DELETE_EXPR): Move this to cplus-tree.def.
-
- Mon Jan 22 00:21:41 1990 Michael Tiemann (tiemann at teacake)
-
- * expr.c (expand_call): Don't reused pending stack space more than
- once in a given nest of calls.
-
- * cplus-init.c (build_delete): Don't build COND_EXPRs when we know
- we don't have to.
-
- * cplus-decl.c (finish_function): At end of destructor, no need to
- cast down the virtual function table if there is no virtual
- function table below (i.e., EXPRSTMT is a NOP_EXPR of
- INTEGER_ZERO_NODE).
-
- * cplus-init.c (finish_base_init): Move code which sets
- CLASSTYPE_MARKED6 of each vbase type to 1 into
- `expand_aggr_vbase_init'.
- * cplus-init.c (expand_aggr_vbase_init): Now static in this file.
- Always set CLASSTYPE_MARKED6 of each vbase type before running the
- initialization, since all virtual baseclasses exposed to this
- function must be initialized.
-
- * cplus-search.c (build_type_pathname): Fix broken use of
- obstacks.
-
- * cplus-typeck.c (c_expand_return): Don't try to call
- `expand_return' when DECL_RESULT is of void type.
-
- * cplus-lex.c (build_opid): Rename C++-specific
- `build_op_identifier' to `build_opid'.
- @@ Suggest changing `build_op_identifier' in tree.o to interface
- of `build_opid'.
- * All callers changed.
-
- Sun Jan 21 06:00:03 1990 Michael Tiemann (tiemann at teacake)
-
- * dbxout.c (dbxout_function): Put out debug info for a named
- return value.
- * dbxout.c (dbxout_symbol): Treat a named RESULT_DECL like a
- VAR_DECL.
-
- * cplus-decl.c (store_return_init): If named return value comes in
- a register, put it in a pseudo.
- * cplus-typeck.c (mark_addressable): Simplify handling of
- RESULT_DECL--no need for anything fancy.
- * cplus-cvt.c (convert_to_reference): Ditto.
-
- * cplus-method.c (build_opfncall): Test FLAGS&LOOKUP_COMPLAIN to
- decide whether call to `build_overload_call' should complain.
-
- * cplus-decl.c (FLAG_INT_ENUM_EQUIVALENCE): New variable, controls
- how ints and enums should interconvert.
- * cplus-class.c (convert_harshness): Implement behavior based on
- that flag.
-
- * cplus-class.c (build_method_call): alloca `harshness' field of
- CP before calling `build_overload_call'.
- * cplus-class.c (build_overload_call): Don't alloca `harshness' of
- FINAL_CP, since caller does this. Also, use `oballoc' for
- `harshness' arrays of CP array when running the list of functions
- to try.
-
- * cplus-method.c (hack_identifier): Use `error', not
- `error_with_decl' to report visibility violation for static
- members. Also, compute visibility with `compute_visibility'.
-
- Sat Jan 20 04:18:40 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-decl.c (finish_decl [#if MERGED]): Don't build DECL's
- cleanups until after it has been laid out.
-
- * cplus-decl.c (maybe_build_cleanup [#if MERGED]): Return an
- RTL_EXPR instead of a DELETE_EXPR.
-
- * cplus-class.c (prepare_fresh_vtable): Copy the list of virtual
- functions fom ASSOC, not from BASE_ASSOC (whose list is too
- short).
- @@ Is DECL_VPARENT right at all?
-
- * cplus-class.c (modify_vtable_entries): Handle case where virtual
- function comes from baseclass of virtual baseclass.
-
- * cplus-search.c (get_base_distance): Always follow the leftmost
- non-virtual path.
-
- * cplus-class.c (finish_struct): When inheriting a base class's
- VFIELD, set its DECL_OFFSET to the correct value, for the cases
- when we use CLASSTYPE_VFIELD instead of `lookup_field' to get to
- the vfield pointer.
-
- * expr.c (expand_expr): Use language-idependent techniques for
- handling NEW_EXPR.
-
- * cplus-init.c (expand_aggr_init): When initializing from a
- CONSTRUCTOR, it does not matter whether TYPE has a constructor
- defined or not: just strip out the elements as though they were
- args to a constructor and proceed.
-
- * cplus-class.c (build_method_call): If we need the address of a
- CONSTRUCTOR, initialize a fresh temporary, as in the NOP_EXPR
- case.
-
- * cplus-decl2.c (grok_method_quals): When building type variants,
- build the pointer types to the varaints.
- * cplus-decl.c (grokdeclarator): Ditto.
-
- * cplus-class.c (build_method_call): Error message was backwards
- when DECL_CONTEXT (FUNCTION) was not a basetype for
- CURRENT_CLASS_TYPE.
-
- * cplus-decl.c (grokdeclarator): If QUALS is non-NULL, don't abort
- if TYPE is not METHOD_TYPE. The correct error message will be
- generated later.
-
- * cplus-method.c (hack_identifier): Check visibility of VAR_DECL
- and CONST_DECL nodes.
-
- * cplus-class.c (instantiate_type): Don't smash the operand of an
- ADDR_EXPR if the type instantiation fails. Also, only give an
- error message in that case if COMPLAIN is nonzero.
-
- Fri Jan 19 15:12:27 1990 Michael Tiemann (tiemann at teacake)
-
- * cplus-decl2.c (grok_method_quals): Don't drop list of exceptions
- raised.
-
- Thu Jan 18 00:20:29 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-lex.c (init_lex): Allocate OPNAME_TAB and ASSIGNOP_TAB.
-
- Wed Jan 17 07:26:05 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-lex.c (get_time_identifier): Added cast for `alloca'.
- * cplus-tree.c (layout_basetypes): Ditto.
-
- * stmt.c (expand_raise): Return nonzero if in exception nesting.
-
- * cplus-lex.c (init_lex): If C compiler doesn't understand the
- construct `sizeof ("string")', then fill in initializer for
- OPNAME_END by hand.
-
- * cplus-init.c: Move declarations of extern struct rtx_def things
- to top of file to keep /bin/cc happy.
-
- * cplus-lex.c (init_lex): Set DECL_PRINTABLE_NAME.
-
- * varasm.c (record_constant_rtx): Save DESC on `current_obstack'
- instead of `saveable_obstack'.
-
- * tree.c (set_identifier_size): SIZE is size in bytes.
- * cplus-lex.c (init_lex): Call `set_identifier_size' with number
- of bytes, not number of slots.
-
- * toplev.c (compile_file): If `bison.simple' is out of date,
- consider that an error.
-
- * cplus-cvt.c (convert): Better error message if type conversion
- via constructor fails.
-
- * cplus-typeck.c (build_modify_expr): Spurious `else' appeared
- when LHSTYPE was aggr type. Deleted.
-
- * cplus-decl2.c (finish_file): Make the dummy variable at the end
- of the virtual function table chain look defined and used (soas
- not to generate spurious warnings).
-
- Tue Jan 16 15:42:30 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * varasm.c (output_constant): Merged latest GCC changes.
- * toplev.c: Merged latest GCC changes.
-
- * cplus-decl.c (init_lex): Must call
- `set_identifier_size' before allocating any identifiers.
-
- * All files: Changed MEMBER_REF to OFFSET_REF.
- * cplus-init.c (build_offset_ref): Rename function
- `build_member_ref' to this.
- * cplus-init.c (resolve_offset_ref): Rename function
- `resolve_member_ref' to this.
-
- * cplus-lex.c (init_lex): Handle language-specific tree codes.
-
- * tree.def (IDENTIFIER_NODE): Default length is 2.
- * tree.def ({SCOPE,MEMBER}_REF): Moved definition to
- cplus-tree.def.
- * tree.def (TYPE_EXPR): Ditto.
-
- * tree.c: Merge language-specific tree code support from GCC
- version 1.90.
- * tree.c (tree_cons,build_tree_list): Simplify these back to using
- `make_node' instead of inline-expansion.
- * tree.c (build_parse_node): renamed function `build_nt0' to this.
- All callers changed.
-
- * Makefile glitch for collect2 fixed.
-
- Tue Jan 16 00:38:39 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * version.c: Version 1.36.3 released.
-
- * Makefile: Fixed makefile for collect2 (for Convexen) as per
- suggesions of <ngo%tammy@harvard.harvard.edu>.
- Also fixed a typo.
-
- Mon Jan 15 10:57:43 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-class.c (build_vbase_path): If path is erroneous (i.e., up
- from a virtual baseclass), then set *BASEP = NULL_TREE.
- * cplus-cvt.c (convert_to_pointer_force): Test BASETYPE before
- testing the DECL_OFFSET of its TYPE_NAME.
-
- * expr.c (store_one_arg): Handle non-PARM_BOUNDARY BLKmode
- parameters in a way that is symmetric with `assign_parms'.
-
- * cplus-init.c (expand_vec_init): Allow assignment semantics if
- FROM_ARRAY is 2.
- * cplus-typeck.c (build_modify_expr): Call `expand_vec_init' with
- in this fashion if an array assignment must be performed.
-
- * expr.c (fixed_type_p): New function says whether the compiler
- guarantees that it knows the true type of an object.
- * expr.c (expand_expr): Call that function for INIT_EXPR and
- MODIFY_EXPR. Also, for MODIFY_EXPR, check both RHS and LHS.
-
- * cplus-typeck.c (build_unary_op): When building an ADDR_EXPR of a
- COMPONENT_REF, must convert the base to the pointer type of the
- DECL_CONTEXT of FIELD, not simply ARGTYPE. Bug triggered when
- FIELD has same type as a virtual or non-leftmost baseclass of
- TYPE.
-
- Sun Jan 14 07:50:28 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-typeck.c (actualparameterlist): Convert FUNCTION_DECLs for
- virtual functions to their proper representation if they were
- instantiated.
-
- * cplus-typeck.c (instantiate_type_1): New function, factors out
- common code in calling `instantiate_type'.
- * cplus-class.c (instantiate_type): Now permitted to call this
- function with OP_IDENTIFIER. (Previously would abort).
-
- * Makefile: Use $(INCLUDES) instead of various random -I options
- scattered throughout front-end.
-
- * varasm.c (assemble_variable): Fix bug where NAME has a '*'
- prefix.
-
- Sat Jan 13 00:17:25 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-class.c (compute_conversion_costs): Fixed comments and
- rearranged code that handled type instantiation. Also handled
- case where type instantiation leaves a parameter ERROR_MARK_NODE
- (consequently making ACTUAL_TYPE ERROR_MARK_NODE).
- * cplus-method.c (report_type_mismatch): Give better error message
- when type instatiation fails and clobbers the argument type.
-
- * cplus-type2.c (basetype_or_else): Code factorization.
- * All places with code of the form
-
- if (t1 == t2 || get_base_type (t1, t2, 0))
- do something;
- else
- do something else;
-
- now calls this function.
-
- * cplus-search.c (get_base_type): For jjg@sun.com: let friend
- classes TYPE have access to immediate baseclasses of TYPE.
- * cplus-search.c (get_base_distance): Same change.
-
- * cplus-method.c (build_opfncall): Give error messages on all
- overloaded functions which non-trivially fail except ADDR_EXPR and
- MODIFY_EXPR.
- * cplus-class.c (build_method_call): Improved error message for
- non-const member function called with const object.
-
- * cplus-class.c (build_vbase_path): New function. Multi-level
- version of `build_vbase_pointer'. Code was moved from
- `convert_to_pointer'.
- * cplus-cvt.c (convert_to_pointer): Call `build_vbase_path'.
- * cplus-cvt.c (convert_pointer_to): Ditto.
- * cplus-cvt.c (convert_to_pointer_force): Remove duplicated code
- and call `build_vbase_path'.
-
- * cplus-decl.c (original_result_rtx): New variable. If named
- return value starts in register, but needs to be addressable, then
- we put the original RESULT_DECL's rtl in here.
- * cplus-typeck.c (c_expand_return): Implement this.
- * cplus-decl.c (finish_function): At end of function, if
- ORIGINAL_RESULT_RTX is non-zero, move DECL_RESULT (FNDECL) there.
- * cplus-typeck.c (mark_addressable): Allow this new feature.
- * cplus-cvt.c (convert_to_reference): Ditto.
-
- Fri Jan 12 00:20:06 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-tree.h (TREE_CALLS_NEW): New meaning for TREE_LANG_FLAG_2:
- for any kind of _EXPR or _REF node, it means that underneath is a
- call to the storage allocator. If we later find out what was
- wanting initialization, we can pitch the call to `new', and the
- subsequent copy, winning big on things like "return String (foo);".
- * cplus-init.c (build_new): Set this bit.
- * cplus-class.c (build_method_call): Ditto.
- * cplus-method.c (build_opfncall): Ditto.
- * cplus-init.c (expand_aggr_init_1): Optimize calls to
- constructors.
-
- * cplus-cvt.c (convert_to_reference): If DECL is ERROR_MARK_NODE,
- then consider this an implicit conversion; if DECL is NULL_TREE,
- it is explicit.
- * cplus-typeck.c (convert_for_initialization): Be explicit that
- this is an implicit conversion.
-
- * cplus-cvt.c (convert_from_reference): Don't special-case
- converting REFERENCE_EXPRs from references.
-
- * cplus-cvt.c (convert_to_*): Factor out checks that EXPR is a
- REFERENCE_TYPE object.
- * cplus-cvt.c (convert{_force}): Factor it to here.
-
- * cplus-cvt.c (convert_pointer_to): New function. Previously
- `convert_to_nonzero_pointer', but now takes converts to pointer-to
- TYPE, rather than to TYPE.
- * cplus-cvt.c (convert_to_nonzero_pointer): Deleted.
- * All callers changed.
-
- * cplus-cvt.c (build_up_reference): If LOOKUP_PROTECTED_OK is set,
- let `get_base_type' return an immediate private baseclass without
- complaining.
- * cplus-cvt.c (convert_to_reference): Don't need to check whether
- conversion violates visibilities, since FLAGS is passed to
- `convert_to_reference'.
- * cplus-search.c (get_base_type): Implement that (if PROTECT == 3).
-
- * stmt.c (*except*): Use ESCAPE_LABEL instead of EXIT_LABEL as
- primary means of control over exception handling nestings.
- Where EXITFLAG was passed, also pass ESCAPEFLAG.
- * All callers changed. ESCAPEFLAG now controls behavior, not
- EXITFLAG.
-
- * stmt.c (expand_exit_nonexcept): Delete this function.
- * cplus-parse.y (stmt): Back out change which called
- `expand_exit_nonexcept' instead of `expand_exit_something'.
-
- * cplus-init.c (expand_recursive_init): Don't forget to initialize
- the vbase pointers if FOR_TYPE uses virtual baseclasses.
-
- * cplus-class.c (rank_for_overload): const/non-const disagreement
- is between checking EVIL and checking USER.
- * cplus-class.c (build_method_call): Don't hastily choose a method
- which has const/non-const disagreement.
-
- * cplus-decl.c (build_function_decl): Unify `builtin_function' and
- `auto_function'; also make it optional to push the function into
- the binding contour.
- * cplus-decl.c (init_decl_processing): Build ABORT_FNDECL.
- * cplus-decl2.c (grok_function_init): Use ABORT_FNDECL.
- * cplus-except.c (init_exception_processing): Ditto.
-
- Thu Jan 11 10:39:31 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-decl2.c (finish_file): Merge changes from Raeburn
- (raeburn@athena.mit.edu) which name file-level initializers
- using global names declared instead of the filename containing
- the objects needing file-level initialization.
- * varasm.c (assemble_{variable,function}): Rest of changes merged.
-
- * cplus-cvt.c (convert_from_reference): When converting a
- REFERENCE_EXPR, wrap TREE_OPERAND (VAL, 0) in the NOP_EXPR
- instead of VAL--to save work later in `expand_expr'.
-
- * cplus-tree.h (LOOKUP_NO_CONVERSION): New flag which inhibits
- looking for user-defined type conversions.
- * cplus-type2.c (build_functional_cast): Use LOOKUP_NO_CONVERSION
- when calling constructor since if a type conversion applied, we
- don't want "two-level" conversions to take place.
- * cplus-class.c (build_method_call): Test this flag when PASS == 2
- and cp->user is non-zero.
-
- * cplus-decl.c (grokdeclarator): Don't set TYPE_HAS_DESTRUCTOR
- here.
- * cplus-decl2.c (grokclassfn): Set it here instead.
-
- Wed Jan 10 07:42:39 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-class.c (build_method_call): -fall-virtual implies that
- 2nd argument to operator->() is an int, not a T (C::*X)(...).
-
- * cplus-decl.c (finish_function): Keep named return values from
- catching warnings from jump.c about functions which appear to not
- return a value.
-
- * cplus-type2.c (process_init_constructor): Test INIT before
- copying TREE_HAS_CONSTRUCTOR flag to RESULT.
-
- * cplus-decl.c (pushdecl): If we had ANON_AGGRNAME_P in "C"
- language scope, and if we get a better name, fix that up as well.
- (Was only doing fixup for "C++" language scope).
-
- * cplus-method.c (dump_init): Handle CONSTRUCTOR as
- initialization.
- * cplus-typeck.c (actualparameterlist): Here, too.
-
- * cplus-decl.c (grokdeclarator): Move test of friend functions
- with method qualifiers to `grokfndecl'.
- * cplus-decl.c (grokfndecl): If QUALS is non-zero, then the
- TREE_CODE of TYPE must be METHOD_TYPE.
-
- * integrate.c (expand_inline_function): Code using
- THIS_STRUCT_VALUE_RTX was (blatantly) incorrect in case where
- STRUCT_VALUE_INCOMING_RTX was MEM. Code that looked right was
- #if 0'd out, but don't know why. Changed back to original code.
-
- Tue Jan 9 22:56:22 1990 Michael Tiemann (tiemann at apple-gunkies.ai.mit.edu)
-
- * cplus-parse.y (stmt): Exception contour is transparent to BREAK
- statement. Call `expand_exit_nonexcept' instead of
- `expand_exit_something'.
- * stmt.c (expand_exit_nonexcept): New function.
-
- * cplus-decl.c (build_enumerator): Accidently shared INTEGER_CST
- nodes which should not have been shared.
-
- Sun Jan 7 00:13:39 1990 Michael Tiemann (tiemann at g.oswego.edu)
-
- * cplus-init.c (expand_aggr_init_1): Use CONST0_RTX as TARGET for
- call to `expand_expr' in case of COND_EXPR.
- Similar changes made elsewhere in compiler where `expand_expr' was
- called.
-
- * cplus-typeck.c (build_modify_expr_1): When CODE is INIT_EXPR,
- and we call a constructor, remember to dereference the result we
- return.
-
- * cplus-init.c (expand_vec_init): Goto of init_by_default was
- accidently circumventing initialization of variable BASE2.
- Also fixed to handle initialization by default in more cases.
-
- * cplus-typeck.c (build_modify_expr_1): Typo. Use "<" instead of
- "<=" for CLASSTYPE_N_BASECLASS loop.
- * cplus-search.c (get_base_type_1): Same typo (but this function
- is never called).
-
- Sat Jan 6 21:55:31 1990 Michael Tiemann (tiemann at g.oswego.edu)
-
- * cplus-tree.h (TREE_HAS_CONSTRUCTOR): For CONSTRUCTOR, means that
- it was a GNU C constructor expression.
- * cplus-parse.y (cast_expr): Set that bit.
- * cplus-type2.c (process_init_constructor): Propagate this bit.
- * cplus-init.c (expand_aggr_init_1): Test that bit and call
- `store_init_value' if set.
-
- * cplus-lex.c: Handle strrchr/rindex problem in one place instead
- of two.
-
- * cplus-init.c (expand_aggr_init_1): Convert INIT to type for EXP
- treating INIT as compound expr.
-
- * cplus-decl.c (grokparms): Can't use `error_with_decl' on a
- PARM_DECL here because DECL_CONTEXT is not set up yet. Fixed in 2
- places.
-
- * cplus-init.c (resolve_member_ref): Check that member is
- FIELD_DECL before bothering about use of non-static member in
- static function context.
-
- * cplus-init.c (embrace_waiting_friends): If TYPE_NAME (TYPE) is
- not a TYPE_DECL, it has no friends waiting.
-
- * cplus-dem.c (optable): Filled in ommissions found by Ron
- Guilmette.
-
- * cplus-decl2.c (grokopexpr): If IS_DECL tells us we have a static
- member function, but TYPE is a METHOD_TYPE, we must send the right
- argument list to build_operator_fnname.
-
- * Makefile: Explicitly link all the gen*.o and insn-*.? files.
- Otherwise, we get symbolic links to "gen*.o", etc.
-
- * make-links.g++: Added symout.c to BORROWED_FILES.
-
- Tue Jan 2 00:39:40 1990 (tiemann at calvin)
-
- * cplus-except.c (cplus_expand_end_except): New parameter EXITFLAG
- says whether to exit current exception contour and try the next
- one.
- * cplus-parse.y: Callers changed.
-
- * cplus-decl.c (pushdecl): Clear TREE_PUBLIC only if VAR_DECL is
- TREE_READONLY and not DECL_EXTERNAL. DECL_EXTERNAL is meaningless
- for other than VAR_DECLs.
- * cplus-decl.c (duplicate_decls): Same change.
- @@ Maybe we can eliminate some duplicated code here!
-
- * cplus-tree.c (copy_to_permanent): If T is NULL_TREE, return it.
-
- * cplus-cvt.c (convert_to_aggr): Deal with "in charge" parameter
- if BASETYPE uses virtual baseclasses.
-
- * cplus-class.c (build_overload_call): Change name of DECL to
- OVERLOAD_NAME. Also, append VOID_LIST_NODE to end of PARMTYPES,
- to build more accurate overload name.
-
- Mon Jan 1 13:36:07 1990 (tiemann at calvin)
-
- * cplus-decl.c (store_parm_decls): No need for PRESERVE flag, so
- deleted. All callers changed.
-
- * cplus-parse.y (member_init): De-implement keeping virtual
- baseclass initializers on the permanent obstack. Now handled by
- "in charge" parameter to constructor.
-
- * cplus-cvt.c (convert_to_reference): Convert EXPR from reference
- if it came in as a reference and its conversion to TYPE& may
- change its value (i.e., if it uses MI or VB).
-
- * cplus-class.c (build_method_call): Use DECL_CONTEXT, not
- DECL_VCONTEXT of FUNCTION when LOOKUP_NONVIRTUAL is in effect.
- Factored out duplicated code in the process.
-
- * cplus-class.c (build_method_call): Constructors called when
- `this' is logically zero must perform any virtual baseclass
- initialization. Other constructors (which are used for
- initialization of sub-ojbects), never perform virtual baseclass
- initialization.
-
-